/**
 * 此文件用于替代手动更新 cordova-plugin-ths-baidulocation 所需的 BD_AK 值
 * 此文件在 ionic cap sync 命令执行前，自动执行
 * 需要在 package.json 文件的 scripts 位置，添加配置："capacitor:sync:before": "node ./cap-sync-bf.js"
 */

// eslint-disable-next-line @typescript-eslint/no-var-requires
const fs = require('fs');

// 读取 xml 文件模块
// eslint-disable-next-line @typescript-eslint/no-var-requires
const xml2js = require('xml2js');

// 获取capacitor.config.json 配置信息
const capacitorConfig = JSON.parse(process.env.CAPACITOR_CONFIG);

const configXmlPath = __dirname + '/android/app/src/main/res/xml/config.xml';
// const xmldoc = loadXmlFile(configXmlPath);
// const elements = xmldoc.getElementsByTagName("widget")[0];
// console.log(xmldoc)
// 读取configxml，修改配置
fs.readFile(configXmlPath, 'utf8', function (err, data) {
  if (err) {
    // console.log('读取 configxml 插件配置文件内容时，发生错误 ==== ', err);
    throw err;
  }
  // const el = data.getElementsByTagName('widget')[0];
  // console.log(el);
  // 将 XML数据 转换为 JSON对象
  xml2js.parseString(data, (err, result) => {
    if (err) {
      // console.log('将 XML数据 转换为 JSON对象时，发生错误 ==== ', err);
      throw err;
    }
    result.widget.access[0]['$']['subdomains'] = 'true';
    result.widget['allow-navigation'] = [
      {
        $: {
          href: '*'
        }
      }
    ];
    result.widget['allow-intent'] = [
      {
        $: {
          href: 'http://*/*'
        }
      },
      {
        $: {
          href: 'https://*/*'
        }
      },
      {
        $: {
          href: 'sms:*'
        }
      },
      {
        $: {
          href: 'tel:*'
        }
      },
      {
        $: {
          href: 'mailto:*'
        }
      },
      {
        $: {
          href: 'geo:*'
        }
      }
    ];
    // console.log('result', result.widget);
    // 将 JSON数据 转换为 XML数据 
    const builder = new xml2js.Builder();
    const xml = builder.buildObject(result);

    // 将更新后的 xml 写入文件
    fs.writeFile(configXmlPath, xml, (err) => {
      if (err) {
        console.log('将更新后的 xml 写入文件时，发生错误 ==== ', err);
        throw err;
      }
      // console.log(`更新后的 xml，成功写入了文件`);
    });
  });
});